%Deze matlab functie berekent de afstand tussen 2 bussen in een elektrisch
%netwerk. De inputvariabelen van de functie zijn twee integers die de
%nummers van de bussen moeten voorstellen waartussen de afstand moet
%berekend worden

function [afst] = afstand(nummer_bus1,nummer_bus2)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Variabelen:
impedantie_lijn=0.789/1.6; %Ohm/mijl*1mijl/1.6km (ref Baldick)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% IEEE_14_bus_original;
load gekozen_netwerk;
eval(network_name);

react_lijn = impedantie_lijn/(2*pi*60); %H/km

%De lengte van de lijn kan berekend worden door de reactantie van de lijn te delen door de reactantie van een lijn per km:
afstand_lijn = Line.con;
%afstand_lijn bevat nu een matrix met daarin alle gegevens van alle lijnen.
%De eerste twee kolommen van de matrix bevatten de nummers van de bussen.
%Eerst wordt bepaald hoeveel lijnen er zijn, dit door het aantal rijen te
%tellen van afstand_lijn. Vervolgens wordt lijn per lijn gekeken of het
%eerste busnummer overeenkomt met het eerste busnummer dat de gebruiker
%heeft opgegeven. Is dit het geval dan wordt gekeken of ook het tweede
%busnummer overeenkomt. Is dit zo dan wordt de variabele gevonden op 1
%gezet, wordt de lengte van de lijn opgeslagen in een variabele afd die dan
%wordt doorgegeven via afst aan de bovenliggende code. Als na het doorlopen
%van de eerste lus de lijn nog niet gevonden is dan kan het zijn dat dit
%komt doordat de gebruiker de bussen in de omgekeerde volgorde heeft
%meegegeven. Door de matrix afstand_lijn nogmaals te doorlopen en nu het
%eerste busnummer te vergelijken met het tweede busnummer dat de gebruiker
%opgeeft wordt dit opgevangen. Als de lijn na het doorlopen van de twee
%lussen nog niet gevonden werd wordt een foutmelding in de console
%uitgeschreven.
[r,k]=size(afstand_lijn);
for i=1:1:r
    if afstand_lijn(i,1)==nummer_bus1
        if afstand_lijn(i,2)==nummer_bus2
            afd=afstand_lijn(i,9)/react_lijn;
            gevonden=1;
        end
    end
end
if gevonden==1 afst=afd ;
else for i=1:1:r
        if afstand_lijn(i,1)==nummer_bus2
                if afstand_lijn(i,2)==nummer_bus1
                    afd=afstand_lijn(i,9)/react_lijn;
                    gevonden=1;
                end
        end
     end
end
     
if gevonden==1 afst=afd;
else 'Er is een fout opgetreden: de lijn werd niet gevonden. Controleer of de opgegeven busnummers correct zijn!!'
end

